﻿using System;
using System.Collections.Generic;
using System.Text;
using DevExpress.Persistent.BaseImpl;
using DevExpress.Xpo;
using DevExpress.Persistent.Base.General;
using DevExpress.Persistent.Base;
using System.ComponentModel;
using DevExpress.Persistent.Validation;
using DevExpress.Data.Filtering;
using DevExpress.Xpo.Metadata;
using DevExpress.Xpo.Metadata.Helpers;

namespace WinSCM.Module.Model
{
    #region 商品--1
    [NavigationItem("基础管理")]
    [DefaultProperty("商品名称")]
    public class 商品 : BaseObject
    {
        public 商品(Session session)
            : base(session)
        {

        }
        private string _商品名称;
        [Custom("Caption", "商品名称")]
        public string 商品名称
        {
            get { return _商品名称; }
            set { SetPropertyValue<string>("商品名称", ref _商品名称, value); }
        }
        private 商品类型 _类型;
        [Custom("Caption", "类型")]
        public 商品类型 类型
        {
            get { return _类型; }
            set { SetPropertyValue<商品类型>("类型", ref _类型, value); }
        }
        private string _规格型号;
        [Custom("Caption", "规格型号")]
        public string 规格型号
        {
            get { return _规格型号; }
            set { SetPropertyValue<string>("规格型号", ref _规格型号, value); }
        }
        private 仓库 _默认仓库;
        [Custom("Caption", "默认仓库")]
        public 仓库 默认仓库
        {
            get { return _默认仓库; }
            set { SetPropertyValue<仓库>("默认仓库", ref _默认仓库, value); }
        }
        private 供应商 _默认供应商;
        [Custom("Caption", "默认供应商")]
        public 供应商 默认供应商
        {
            get { return _默认供应商; }
            set { SetPropertyValue<供应商>("默认供应商", ref _默认供应商, value); }
        }
        private string _备注;
        [Custom("Caption", "备注")]
        public string 备注
        {
            get { return _备注; }
            set { SetPropertyValue<string>("备注", ref _备注, value); }
        }

    }
    [NavigationItem("基础管理")]
    [DefaultProperty("名称")]
    public class 计量单位 : BaseObject
    {
        public 计量单位(Session session)
            : base(session)
        {

        }
        private string _名称;
        [Custom("Caption", "名称")]
        public string 名称
        {
            get { return _名称; }
            set { SetPropertyValue<string>("名称", ref _名称, value); }
        }

    }
    [NavigationItem("基础管理")]
    [DefaultProperty("名称")]
    public class 商品类型 : BaseObject
    {
        public 商品类型(Session session)
            : base(session)
        {

        }
        private string _名称;
        [Custom("Caption", "名称")]
        public string 名称
        {
            get { return _名称; }
            set { SetPropertyValue<string>("名称", ref _名称, value); }
        }

    }
    [NavigationItem("基础管理")]
    [DefaultProperty("名称")]
    public class 辅助属性 : BaseObject
    {
        public 辅助属性(Session session)
            : base(session)
        {

        }
        private string _名称;
        [Custom("Caption", "名称")]
        public string 名称
        {
            get { return _名称; }
            set { SetPropertyValue<string>("名称", ref _名称, value); }
        }
        private string _备注;
        [Custom("Caption", "备注")]
        public string 备注
        {
            get { return _备注; }
            set { SetPropertyValue<string>("备注", ref _备注, value); }
        }
    }
    [NavigationItem("基础管理")]
    [DefaultProperty("商品名称")]
    public class 商品价格资料 : BaseObject
    {
        public 商品价格资料(Session session)
            : base(session)
        {

        }
        private 商品 _商品名称;
        [Custom("Caption", "商品名称")]
        public 商品 商品名称
        {
            get { return _商品名称; }
            set { SetPropertyValue<商品>("商品名称", ref _商品名称, value); }
        }
        private decimal _采购价一;
        [Custom("Caption", "采购价一")]
        public decimal 采购价一
        {
            get { return _采购价一; }
            set { SetPropertyValue<decimal>("采购价一", ref _采购价一, value); }
        }
        private decimal _采购价二;
        [Custom("Caption", "采购价二")]
        public decimal 采购价二
        {
            get { return _采购价二; }
            set { SetPropertyValue<decimal>("采购价二", ref _采购价二, value); }
        }
        private decimal _销售价一;
        [Custom("Caption", "销售价一")]
        public decimal 销售价一
        {
            get { return _销售价一; }
            set { SetPropertyValue<decimal>("销售价一", ref _销售价一, value); }
        }
        private decimal _销售价二;
        [Custom("Caption", "销售价二")]
        public decimal 销售价二
        {
            get { return _销售价二; }
            set { SetPropertyValue<decimal>("销售价二", ref _销售价二, value); }
        }

        
    }
    #endregion

    #region 仓库--1
    [NavigationItem("基础管理")]
    [DefaultProperty("仓库名称")]
    public class 仓库 : BaseObject
    {
        public 仓库(Session session)
            : base(session)
        {

        }
        private string _仓库名称;
        [Custom("Caption", "仓库名称")]
        public string 仓库名称
        {
            get { return _仓库名称; }
            set { SetPropertyValue<string>("仓库名称", ref _仓库名称, value); }
        }
        private 仓库类型 _仓库类型名称;
        [Custom("Caption", "仓库类型名称")]
        public 仓库类型 仓库类型名称
        {
            get { return _仓库类型名称; }
            set { SetPropertyValue<仓库类型>("仓库类型名称", ref _仓库类型名称, value); }
        }

        private string _助记码;
        [Custom("Caption", "助记码")]
        public string 助记码
        {
            get { return _助记码; }
            set { SetPropertyValue<string>("助记码", ref _助记码, value); }
        }
        private string _仓管员;
        [Custom("Caption", "仓管员")]
        public string 仓管员
        {
            get { return _仓管员; }
            set { SetPropertyValue<string>("仓管员", ref _仓管员, value); }
        }
        private string _仓库地址;
        [Custom("Caption", "仓库地址")]
        public string 仓库地址
        {
            get { return _仓库地址; }
            set { SetPropertyValue<string>("仓库地址", ref _仓库地址, value); }
        }
        private string _联系电话;
        [Custom("Caption", "联系电话")]
        public string 联系电话
        {
            get { return _联系电话; }
            set { SetPropertyValue<string>("联系电话", ref _联系电话, value); }
        }
        private string _备注;
        [Custom("Caption", "备注")]
        public string 备注
        {
            get { return _备注; }
            set { SetPropertyValue<string>("备注", ref _备注, value); }
        }
    }
    [NavigationItem("基础管理")]
    [DefaultProperty("仓库类型名称")]
    public class 仓库类型 : BaseObject
    {
        public 仓库类型(Session session)
            : base(session)
        {

        }
        private string _仓库类型名称;
        [Custom("Caption", "仓库类型名称")]
        public string 仓库类型名称
        {
            get { return _仓库类型名称; }
            set { SetPropertyValue<string>("仓库类型名称", ref _仓库类型名称, value); }
        }
    }
    [NavigationItem("基础管理")]
    [DefaultProperty("名称")]
    public class 出入库分类 : BaseObject
    {
        public 出入库分类(Session session)
            : base(session)
        {
        }
        private 出入库类别 _出入库类别;
        [Custom("Caption", "出入库类别")]
        public 出入库类别 出入库类别
        {
            get { return _出入库类别; }
            set { SetPropertyValue<出入库类别>("出入库类别", ref _出入库类别, value); }
        }
        private string _名称;
        [Custom("Caption", "名称")]
        public string 名称
        {
            get { return _名称; }
            set { SetPropertyValue<string>("名称", ref _名称, value); }
        }

        private 会计科目 _会计科目;
        [Custom("Caption", "会计科目")]
        public 会计科目 会计科目
        {
            get { return _会计科目; }
            set { SetPropertyValue<会计科目>("会计科目", ref _会计科目, value); }
        }
    }
    public enum 出入库类别
    {
        出库类别 = 1,
        入库类别 = 2
    }
    #endregion

    #region 往来单位--1
    [NavigationItem("基础管理")]
    [DefaultProperty("名称")]
    public class 客户 : BaseObject
    {
        public 客户(Session session)
            : base(session)
        {

        }
        private string _名称;
        [Custom("Caption", "名称")]
        public string 名称
        {
            get { return _名称; }
            set { SetPropertyValue<string>("名称", ref _名称, value); }
        }

        private string _简称;
        [Custom("Caption", "简称")]
        public string 简称
        {
            get { return _简称; }
            set { SetPropertyValue<string>("简称", ref _简称, value); }
        }
        private string _助记码;
        [Custom("Caption", "助记码")]
        public string 助记码
        {
            get { return _助记码; }
            set { SetPropertyValue<string>("助记码", ref _助记码, value); }
        }
        private 客户等级 _客户等级;
        [Custom("Caption", "客户等级")]
        public 客户等级 客户等级
        {
            get { return _客户等级; }
            set { SetPropertyValue<客户等级>("客户等级", ref _客户等级, value); }
        }
        private 区域 _区域;
        [Custom("Caption", "区域")]
        public 区域 区域
        {
            get { return _区域; }
            set { SetPropertyValue<区域>("区域", ref _区域, value); }
        }
        private 行业 _行业;
        [Custom("Caption", "行业")]
        public 行业 行业
        {
            get { return _行业; }
            set { SetPropertyValue<行业>("行业", ref _行业, value); }
        }
        private string _法人代表;
        [Custom("Caption", "法人代表")]
        public string 法人代表
        {
            get { return _法人代表; }
            set { SetPropertyValue<string>("法人代表", ref _法人代表, value); }
        }
        private string _联系人;
        [Custom("Caption", "联系人")]
        public string 联系人
        {
            get { return _联系人; }
            set { SetPropertyValue<string>("联系人", ref _联系人, value); }
        }
        private string _联系电话;
        [Custom("Caption", "联系电话")]
        public string 联系电话
        {
            get { return _联系电话; }
            set { SetPropertyValue<string>("联系电话", ref _联系电话, value); }
        }
        private string _送货地址;
        [Custom("Caption", "送货地址")]
        public string 送货地址
        {
            get { return _送货地址; }
            set { SetPropertyValue<string>("送货地址", ref _送货地址, value); }
        }
        private string _公司地址;
        [Custom("Caption", "公司地址")]
        public string 公司地址
        {
            get { return _公司地址; }
            set { SetPropertyValue<string>("公司地址", ref _公司地址, value); }
        }
        private 银行 _开户银行;
        [Custom("Caption", "开户银行")]
        public 银行 开户银行
        {
            get { return _开户银行; }
            set { SetPropertyValue<银行>("开户银行", ref _开户银行, value); }
        }
        private string _银行账号;
        [Custom("Caption", "银行账号")]
        public string 银行账号
        {
            get { return _银行账号; }
            set { SetPropertyValue<string>("银行账号", ref _银行账号, value); }
        }
        private string _备注;
        [Custom("Caption", "备注")]
        public string 备注
        {
            get { return _备注; }
            set { SetPropertyValue<string>("备注", ref _备注, value); }
        }
    }
    [NavigationItem("基础管理")]
    [DefaultProperty("名称")]
    public class 供应商 : BaseObject
    {
        public 供应商(Session session)
            : base(session)
        {

        }
        private string _名称;
        [Custom("Caption", "名称")]
        public string 名称
        {
            get { return _名称; }
            set { SetPropertyValue<string>("名称", ref _名称, value); }
        }
        private string _简称;
        [Custom("Caption", "简称")]
        public string 简称
        {
            get { return _简称; }
            set { SetPropertyValue<string>("简称", ref _简称, value); }
        }
        private string _助记码;
        [Custom("Caption", "助记码")]
        public string 助记码
        {
            get { return _助记码; }
            set { SetPropertyValue<string>("助记码", ref _助记码, value); }
        }
        private 区域 _区域;
        [Custom("Caption", "区域")]
        public 区域 区域
        {
            get { return _区域; }
            set { SetPropertyValue<区域>("区域", ref _区域, value); }
        }
        private 行业 _行业;
        [Custom("Caption", "行业")]
        public 行业 行业
        {
            get { return _行业; }
            set { SetPropertyValue<行业>("行业", ref _行业, value); }
        }
        private string _法人代表;
        [Custom("Caption", "法人代表")]
        public string 法人代表
        {
            get { return _法人代表; }
            set { SetPropertyValue<string>("法人代表", ref _法人代表, value); }
        }
        private string _联系人;
        [Custom("Caption", "联系人")]
        public string 联系人
        {
            get { return _联系人; }
            set { SetPropertyValue<string>("联系人", ref _联系人, value); }
        }
        private string _联系电话;
        [Custom("Caption", "联系电话")]
        public string 联系电话
        {
            get { return _联系电话; }
            set { SetPropertyValue<string>("联系电话", ref _联系电话, value); }
        }
        private string _发货地址;
        [Custom("Caption", "发货地址")]
        public string 发货地址
        {
            get { return _发货地址; }
            set { SetPropertyValue<string>("发货地址", ref _发货地址, value); }
        }
        private string _公司地址;
        [Custom("Caption", "公司地址")]
        public string 公司地址
        {
            get { return _公司地址; }
            set { SetPropertyValue<string>("公司地址", ref _公司地址, value); }
        }
        private 银行 _开户银行;
        [Custom("Caption", "开户银行")]
        public 银行 开户银行
        {
            get { return _开户银行; }
            set { SetPropertyValue<银行>("开户银行", ref _开户银行, value); }
        }
        private string _备注;
        [Custom("Caption", "备注")]
        public string 备注
        {
            get { return _备注; }
            set { SetPropertyValue<string>("备注", ref _备注, value); }
        }
    }
    [NavigationItem("基础管理")]
    [DefaultProperty("名称")]
    public class 区域 : BaseObject
    {
        public 区域(Session session)
            : base(session)
        {

        }
        private string _名称;
        [Custom("Caption", "名称")]
        public string 名称
        {
            get { return _名称; }
            set { SetPropertyValue<string>("名称", ref _名称, value); }
        }

    }
    [NavigationItem("基础管理")]
    [DefaultProperty("名称")]
    public class 行业 : BaseObject
    {
        public 行业(Session session)
            : base(session)
        {

        }
        private string _名称;
        [Custom("Caption", "名称")]
        public string 名称
        {
            get { return _名称; }
            set { SetPropertyValue<string>("名称", ref _名称, value); }
        }

    }
    [NavigationItem("基础管理")]
    [DefaultProperty("名称")]
    public class 银行 : BaseObject
    {
        public 银行(Session session)
            : base(session)
        {

        }
        private string _名称;
        [Custom("Caption", "名称")]
        public string 名称
        {
            get { return _名称; }
            set { SetPropertyValue<string>("名称", ref _名称, value); }
        }

    }
    [NavigationItem("基础管理")]
    [DefaultProperty("名称")]
    public class 结算期限 : BaseObject
    {
        public 结算期限(Session session)
            : base(session)
        {

        }
        private string _名称;
        [Custom("Caption", "名称")]
        public string 名称
        {
            get { return _名称; }
            set { SetPropertyValue<string>("名称", ref _名称, value); }
        }
    }
    [NavigationItem("基础管理")]
    [DefaultProperty("名称")]
    public class 客户等级 : BaseObject
    {
        public 客户等级(Session session)
            : base(session)
        {

        }
        private string _名称;
        [Custom("Caption", "名称")]
        public string 名称
        {
            get { return _名称; }
            set { SetPropertyValue<string>("名称", ref _名称, value); }
        }
        private decimal _折扣率;
        [Custom("Caption", "折扣率")]
        public decimal 折扣率
        {
            get { return _折扣率; }
            set { SetPropertyValue<decimal>("折扣率", ref _折扣率, value); }
        }

    }
    [NavigationItem("基础管理")]
    [DefaultProperty("名称")]
    public class 交货方式 : BaseObject
    {
        public 交货方式(Session session)
            : base(session)
        {

        }
        private string _名称;
        [Custom("Caption", "名称")]
        public string 名称
        {
            get { return _名称; }
            set { SetPropertyValue<string>("名称", ref _名称, value); }
        }

    }
    [NavigationItem("基础管理")]
    [DefaultProperty("名称")]
    public class 交货地点 : BaseObject
    {
        public 交货地点(Session session)
            : base(session)
        {

        }
        private string _名称;
        [Custom("Caption", "名称")]
        public string 名称
        {
            get { return _名称; }
            set { SetPropertyValue<string>("名称", ref _名称, value); }
        }

    }
    #endregion

    #region 部门职员--1
    [NavigationItem("基础管理")]
    [DefaultProperty("名称")]
    public class 部门 : BaseObject
    {
        public 部门(Session session)
            : base(session)
        {

        }
        private string _名称;
        [Custom("Caption", "名称")]
        public string 名称
        {
            get { return _名称; }
            set { SetPropertyValue<string>("名称", ref _名称, value); }
        }
        private 部门类别 _部门类别;
        [Custom("Caption", "部门类别")]
        public 部门类别 部门类别
        {
            get { return _部门类别; }
            set { SetPropertyValue<部门类别>("部门类别", ref _部门类别, value); }
        }

        private string _助记码;
        [Custom("Caption", "助记码")]
        public string 助记码
        {
            get { return _助记码; }
            set { SetPropertyValue<string>("助记码", ref _助记码, value); }
        }
        private 职员 _部门主管;
        [Custom("Caption", "部门主管")]
        public 职员 部门主管
        {
            get { return _部门主管; }
            set { SetPropertyValue<职员>("部门主管", ref _部门主管, value); }
        }
        private string _部门电话;
        [Custom("Caption", "部门电话")]
        public string 部门电话
        {
            get { return _部门电话; }
            set { SetPropertyValue<string>("部门电话", ref _部门电话, value); }
        }
        private string _传真;
        [Custom("Caption", "传真")]
        public string 传真
        {
            get { return _传真; }
            set { SetPropertyValue<string>("传真", ref _传真, value); }
        }
        private string _备注;
        [Custom("Caption", "备注")]
        public string 备注
        {
            get { return _备注; }
            set { SetPropertyValue<string>("备注", ref _备注, value); }
        }        
    }
    [DefaultProperty("名称")]
    public class 部门类别 : BaseObject
    {
        public 部门类别(Session session)
            : base(session)
        {

        }

        private string _名称;
        [Custom("Caption", "名称")]
        public string 名称
        {
            get { return _名称; }
            set { SetPropertyValue<string>("名称", ref _名称, value); }
        }
    }
    [DefaultProperty("组名")]
    public class 用户组 : BaseObject
    {
        public 用户组(Session session):base(session)
        {

        }
        private string _组名;
        [Custom("Caption", "组名")]
        public string 组名
        {
            get { return _组名; }
            set { SetPropertyValue<string>("组名", ref _组名, value); }
        }

    }
    [NavigationItem("基础管理")]
    [DefaultProperty("FullName")]
    public class 职员 : User
    {
        public 职员(Session session)
            : base(session)
        {

        }      
        private string _助记码;
        [Custom("Caption", "助记码")]
        public string 助记码
        {
            get { return _助记码; }
            set { SetPropertyValue<string>("助记码", ref _助记码, value); }
        }

        private 性别 _性别;
        [Custom("Caption", "性别")]
        public 性别 性别
        {
            get { return _性别; }
            set { SetPropertyValue<性别>("性别", ref _性别, value); }
        }
        private 部门 _部门名称;
        [Custom("Caption", "部门名称")]
        public 部门 部门名称
        {
            get { return _部门名称; }
            set { SetPropertyValue<部门>("部门名称", ref _部门名称, value); }
        }
        private 职员类别 _职员类别;
        [Custom("Caption", "职员类别")]
        public 职员类别 职员类别
        {
            get { return _职员类别; }
            set { SetPropertyValue<职员类别>("职员类别", ref _职员类别, value); }
        }
        private 用户组 _所属用户组;
        [Custom("Caption", "所属用户组")]
        public 用户组 所属用户组
        {
            get { return _所属用户组; }
            set { SetPropertyValue<用户组>("所属用户组", ref _所属用户组, value); }
        }

        private 职务 _职务;
        [Custom("Caption", "职务")]
        public 职务 职务
        {
            get { return _职务; }
            set { SetPropertyValue<职务>("职务", ref _职务, value); }
        }
        private 文化程度 _文化程度;
        [Custom("Caption", "文化程度")]
        public 文化程度 文化程度
        {
            get { return _文化程度; }
            set { SetPropertyValue<文化程度>("文化程度", ref _文化程度, value); }
        }
        private DateTime _入职日期;
        [Custom("Caption", "入职日期")]
        public DateTime 入职日期
        {
            get { return _入职日期; }
            set { SetPropertyValue<DateTime>("入职日期", ref _入职日期, value); }
        }
        private DateTime _离职日期;
        [Custom("Caption", "离职日期")]
        public DateTime 离职日期
        {
            get { return _离职日期; }
            set { SetPropertyValue<DateTime>("离职日期", ref _离职日期, value); }
        }
        private string _备注;
        [Custom("Caption", "备注")]
        public string 备注
        {
            get { return _备注; }
            set { SetPropertyValue<string>("备注", ref _备注, value); }
        }
    }
    public enum 性别
    {
        未知 = 0,
        男 = 1,
        女 = 2
    }
    [NavigationItem("基础管理")]
    [DefaultProperty("名称")]
    public class 文化程度 : BaseObject
    {
        public 文化程度(Session session)
            : base(session)
        {

        }
        private string _名称;
        [Custom("Caption", "名称")]
        public string 名称
        {
            get { return _名称; }
            set { SetPropertyValue<string>("名称", ref _名称, value); }
        }

    }
    [NavigationItem("基础管理")]
    [DefaultProperty("名称")]
    public class 职员类别 : BaseObject
    {
        public 职员类别(Session session)
            : base(session)
        {

        }
        private string _名称;
        [Custom("Caption", "名称")]
        public string 名称
        {
            get { return _名称; }
            set { SetPropertyValue<string>("名称", ref _名称, value); }
        }

    }
    [NavigationItem("基础管理")]
    [DefaultProperty("名称")]
    public class 职务 : BaseObject
    {
        public 职务(Session session)
            : base(session)
        {

        }
        private string _名称;
        [Custom("Caption", "名称")]
        public string 名称
        {
            get { return _名称; }
            set { SetPropertyValue<string>("名称", ref _名称, value); }
        }

    }
    #endregion

    #region 币别--1
    [NavigationItem("基础管理")]
    [DefaultProperty("币别名称")]
    public class 币别 : BaseObject
    {
        public 币别(Session session)
            : base(session)
        {

        }
        private string _币别名称;
        [Custom("Caption", "币别名称")]
        public string 币别名称
        {
            get { return _币别名称; }
            set { SetPropertyValue<string>("币别名称", ref _币别名称, value); }
        }
        private decimal _记账汇率;
        [Custom("Caption", "记账汇率")]
        public decimal 记账汇率
        {
            get { return _记账汇率; }
            set { SetPropertyValue<decimal>("记账汇率", ref _记账汇率, value); }
        }
    }
    #endregion

    #region 会计资料--1
    [NavigationItem("基础管理")]
    [DefaultProperty("科目名称")]
    public class 会计科目 : BaseObject
    {
        public 会计科目(Session session)
            : base(session)
        {

        }
        private string _科目名称;
        [Custom("Caption", "科目名称")]
        public string 科目名称
        {
            get { return _科目名称; }
            set { SetPropertyValue<string>("科目名称", ref _科目名称, value); }
        }
        private string _助记码;
        [Custom("Caption", "助记码")]
        public string 助记码
        {
            get { return _助记码; }
            set { SetPropertyValue<string>("助记码", ref _助记码, value); }
        }
        private 科目类别 _科目类别;
        [Custom("Caption", "科目类别")]
        public 科目类别 科目类别
        {
            get { return _科目类别; }
            set { SetPropertyValue<科目类别>("科目类别", ref _科目类别, value); }
        }
        private 余额方向 _余额方向;
        [Custom("Caption", "余额方向")]
        public 余额方向 余额方向
        {
            get { return _余额方向; }
            set { SetPropertyValue<余额方向>("余额方向", ref _余额方向, value); }
        }
    }
    public enum 余额方向
    {
        借方 = 1,
        贷方 = 2
    }
    [NavigationItem("基础管理")]
    [DefaultProperty("名称")]
    public class 科目类别 : BaseObject
    {
        public 科目类别(Session session)
            : base(session)
        {

        }
        private string _名称;
        [Custom("Caption", "名称")]
        public string 名称
        {
            get { return _名称; }
            set { SetPropertyValue<string>("名称", ref _名称, value); }
        }
    }
    [NavigationItem("基础管理")]
    [DefaultProperty("名称")]
    public class 凭证字 : BaseObject
    {
        public 凭证字(Session session)
            : base(session)
        {

        }
        private string _名称;
        [Custom("Caption", "名称")]
        public string 名称
        {
            get { return _名称; }
            set { SetPropertyValue<string>("名称", ref _名称, value); }
        }

    }
    [NavigationItem("基础管理")]
    [DefaultProperty("名称")]
    public class 模式凭证 : BaseObject
    {
        public 模式凭证(Session session)
            : base(session)
        {

        }
        private string _名称;
        [Custom("Caption", "名称")]
        public string 名称
        {
            get { return _名称; }
            set { SetPropertyValue<string>("名称", ref _名称, value); }
        }
        private 模式凭证类别 _模式凭证类别;
        [Custom("Caption", "模式凭证类别")]
        public 模式凭证类别 模式凭证类别
        {
            get { return _模式凭证类别; }
            set { SetPropertyValue<模式凭证类别>("模式凭证类别", ref _模式凭证类别, value); }
        }
        private 凭证字 _凭证字;
        [Custom("Caption", "凭证字")]
        public 凭证字 凭证字
        {
            get { return _凭证字; }
            set { SetPropertyValue<凭证字>("凭证字", ref _凭证字, value); }
        }
        private int _附件数;
        [Custom("Caption", "附件数")]
        public int 附件数
        {
            get { return _附件数; }
            set { SetPropertyValue<int>("附件数", ref _附件数, value); }
        }

    }
    [NavigationItem("基础管理")]
    [DefaultProperty("名称")]
    public class 模式凭证类别 : BaseObject
    {
        public 模式凭证类别(Session session)
            : base(session)
        {

        }
        private string _名称;
        [Custom("Caption", "名称")]
        public string 名称
        {
            get { return _名称; }
            set { SetPropertyValue<string>("名称", ref _名称, value); }
        }

    }
    [NavigationItem("基础管理")]
    [DefaultProperty("Name")]
    public class 现金流项目 : BaseObject, IHCategory
    {
        public 现金流项目(Session session)
            : base(session)
        {

        }
        private string _name;
        [Custom("Caption", "名称")]
        public string Name
        {
            get
            {
                return _name;
            }
            set
            {
                SetPropertyValue<string>("Name", ref _name, value);
            }
        }
        private string _FullName;
        [Custom("Caption", "全名称")]
        public string FullName
        {
            get { return _FullName; }
            set { SetPropertyValue<string>("FullName", ref _FullName, value); }
        }

        private 现金流项目 _父现金流项目;
        [Association("父-子现金流项目")]
        public 现金流项目 父现金流项目
        {
            get { return _父现金流项目; }
            set { SetPropertyValue<现金流项目>("父现金流项目", ref _父现金流项目, value); }
        }
        [Association("父-子现金流项目")]
        public XPCollection<现金流项目> 子现金流项目
        {
            get
            {
                return GetCollection<现金流项目>("子现金流项目");
            }
        }
        [Custom("IsVisibleInDetailView","False")]
        [Custom("IsVisibleInListView", "False")]
        [Custom("IsVisibleInLookupListView", "False")]
        public ITreeNode Parent
        {
            get
            {
                return 父现金流项目;
            }
            set
            {
                父现金流项目 = value as 现金流项目;
            }
        }
        [Custom("IsVisibleInDetailView", "False")]
        [Custom("IsVisibleInListView", "False")]
        [Custom("IsVisibleInLookupListView", "False")]
        public IBindingList Children
        {
            get { return 子现金流项目; }
        }
    }
    #endregion

    #region 结算方式--1
    [NavigationItem("基础管理")]
    [DefaultProperty("结算名称")]
    public class 结算方式 : BaseObject
    {
        public 结算方式(Session session)
            : base(session)
        {

        }
        private string _结算名称;
        [Custom("Caption", "结算名称")]
        public string 结算名称
        {
            get { return _结算名称; }
            set { SetPropertyValue<string>("结算名称", ref _结算名称, value); }
        }
        private 结算账户 _默认结算账户;
        [Custom("Caption", "默认结算账户")]
        public 结算账户 默认结算账户
        {
            get { return _默认结算账户; }
            set { SetPropertyValue<结算账户>("默认结算账户", ref _默认结算账户, value); }
        }
    }
    #endregion

    #region 结算账户--1
    [NavigationItem("基础管理")]
    [DefaultProperty("名称")]
    public class 结算账户 : BaseObject
    {
        public 结算账户(Session session)
            : base(session)
        {

        }
        private string _名称;
        [Custom("Caption", "名称")]
        public string 名称
        {
            get { return _名称; }
            set { SetPropertyValue<string>("名称", ref _名称, value); }
        }
        private 会计科目 _科目名称;
        [Custom("Caption", "科目名称")]
        public 会计科目 科目名称
        {
            get { return _科目名称; }
            set { SetPropertyValue<会计科目>("科目名称", ref _科目名称, value); }
        }
        private decimal _期初余额;
        [Custom("Caption", "期初余额")]
        public decimal 期初余额
        {
            get { return _期初余额; }
            set { SetPropertyValue<decimal>("期初余额", ref _期初余额, value); }
        }
        //private DateTime _启用期间;
        //[Custom("Caption", "启用期间")]
        //public DateTime 启用期间
        //{
        //    get { return _启用期间; }
        //    set { SetPropertyValue<DateTime>("启用期间", ref _启用期间, value); }
        //}
    }
    #endregion

    #region 摘要库--1
    [NavigationItem("基础管理")]
    [DefaultProperty("摘要名称")]
    public class 摘要库 : BaseObject
    {
        public 摘要库(Session session)
            : base(session)
        {

        }
        private 摘要类别 _摘要类别;
        [Custom("Caption", "摘要类别")]
        public 摘要类别 摘要类别
        {
            get { return _摘要类别; }
            set { SetPropertyValue<摘要类别>("摘要类别", ref _摘要类别, value); }
        }
        private string _摘要名称;
        [Custom("Caption", "摘要名称")]
        public string 摘要名称
        {
            get { return _摘要名称; }
            set { SetPropertyValue<string>("摘要名称", ref _摘要名称, value); }
        }
    }
    [NavigationItem("基础管理")]
    [DefaultProperty("Name")]
    public class 摘要类别 : XPLiteObject, IHCategory
    {
        public 摘要类别(Session session)
            : base(session)
        {

        }
        private string _name;
        [Custom("Caption", "摘要类别名称")]
        [Key(false)]
        public string Name
        {
            get
            {
                return _name;
            }
            set
            {
                SetPropertyValue<string>("Name", ref _name, value);
            }
        }
        private 摘要类别 _父摘要类别;
        [Association("父-子摘要类别")]
        public 摘要类别 父摘要类别
        {
            get
            {
                return _父摘要类别;
            }
            set
            {
                SetPropertyValue<摘要类别>("父摘要类别", ref _父摘要类别, value);
            }
        }
        private XPCollection<摘要库> _摘要库;
        public XPCollection<摘要库> 摘要库
        {
            get
            {
                if (_摘要库 == null)
                {
                    _摘要库 = new XPCollection<摘要库>(Session, new BinaryOperator("摘要类别", this));
                }
                return _摘要库;
            }
        }

        [Association("父-子摘要类别")]
        public XPCollection<摘要类别> 子摘要类别
        {
            get
            {
                return base.GetCollection<摘要类别>("子摘要类别");
            }
        }
        private int _排序号;
        public int 排序号
        {
            get { return _排序号; }
            set { SetPropertyValue<int>("排序号", ref _排序号, value); }
        }

        ITreeNode IHCategory.Parent
        {
            get
            {
                return 父摘要类别;
            }
            set
            {
                父摘要类别 = value as 摘要类别;
            }
        }

        IBindingList ITreeNode.Children
        {
            get
            {
                return 子摘要类别;
            }
        }

        ITreeNode ITreeNode.Parent
        {
            get
            {
                return 父摘要类别;
            }
        }
    }
    #endregion

    #region 收支类别--1
    [NavigationItem("基础管理")]
    [DefaultProperty("名称")]
    public class 收支类别 : BaseObject
    {
        public 收支类别(Session session)
            : base(session)
        {

        }
        private 收支分类 _收支分类;
        [Custom("Caption", "收支分类")]
        public 收支分类 收支分类
        {
            get { return _收支分类; }
            set { SetPropertyValue<收支分类>("收支分类", ref _收支分类, value); }
        }
        private string _名称;
        [Custom("Caption", "名称")]
        public string 名称
        {
            get { return _名称; }
            set { SetPropertyValue<string>("名称", ref _名称, value); }
        }
        private string _全名称;
        [Custom("Caption", "全名称")]
        public string 全名称
        {
            get { return _全名称; }
            set { SetPropertyValue<string>("全名称", ref _全名称, value); }
        }

        private string _助记码;
        [Custom("Caption", "助记码")]
        public string 助记码
        {
            get { return _助记码; }
            set { SetPropertyValue<string>("助记码", ref _助记码, value); }
        }
        private 会计科目 _会计科目;
        [Custom("Caption", "会计科目")]
        public 会计科目 会计科目
        {
            get { return _会计科目; }
            set { SetPropertyValue<会计科目>("会计科目", ref _会计科目, value); }
        }

    }
    public enum 收支分类
    {
        收入类别 = 1,
        支出类别 = 2
    }
    #endregion

    #region 组装清单--1
    [NavigationItem("基础管理")]
    [DefaultProperty("商品名称")]
    public class 组装清单 : BaseObject
    {
        public 组装清单(Session session)
            : base(session)
        {

        }
        private string _组装清单名称;
        [Custom("Caption", "组装清单名称")]
        public string 组装清单名称
        {
            get { return _组装清单名称; }
            set { SetPropertyValue<string>("组装清单名称", ref _组装清单名称, value); }
        }
        private 组装类别 _组装类别;
        [Custom("Caption", "组装类别")]
        public 组装类别 组装类别
        {
            get { return _组装类别; }
            set { SetPropertyValue<组装类别>("组装类别", ref _组装类别, value); }
        }
        private 商品 _商品名称;
        [Custom("Caption", "商品名称")]
        public 商品 商品名称
        {
            get { return _商品名称; }
            set { SetPropertyValue<商品>("商品名称", ref _商品名称, value); }
        }
        [Association("组装清单-详细")]
        public XPCollection<组装清单详细> 组装清单详细
        {
            get { return GetCollection<组装清单详细>("组装清单详细"); }
        }
    }
    public class 组装清单详细 : BaseObject
    {
        public 组装清单详细(Session session)
            : base(session)
        {

        }
        private 组装清单 _组装清单;
        [Custom("Caption", "组装清单")]
        [Association("组装清单-详细")]
        public 组装清单 组装清单
        {
            get { return _组装清单; }
            set { SetPropertyValue<组装清单>("组装清单", ref _组装清单, value); }
        }
        private 商品 _商品名称;
        [Custom("Caption", "商品名称")]
        public 商品 商品名称
        {
            get { return _商品名称; }
            set { SetPropertyValue<商品>("商品名称", ref _商品名称, value); }
        }
        private decimal _数量;
        [Custom("Caption", "数量")]
        public decimal 数量
        {
            get { return _数量; }
            set { SetPropertyValue<decimal>("数量", ref _数量, value); }
        }
        private 仓库 _默认仓库;
        [Custom("Caption", "默认仓库")]
        public 仓库 默认仓库
        {
            get { return _默认仓库; }
            set { SetPropertyValue<仓库>("默认仓库", ref _默认仓库, value); }
        }
        private string _备注;
        [Custom("Caption", "备注")]
        public string 备注
        {
            get { return _备注; }
            set { SetPropertyValue<string>("备注", ref _备注, value); }
        }
    }
    public enum 组装类别
    {
        组装类 = 1,
        拆卸类 = 2
    }
    #endregion

    #region 单据设置--1
    /// <summary>
    /// 单据设置Key键设置转换器
    /// </summary>
    //public class SeedNumKeyConverter : ValueConverter
    //{
    //    public override object ConvertFromStorageType(object value)
    //    {
    //        return (SeedType)Convert.ToInt32(value);
    //    }
    //    public override object ConvertToStorageType(object value)
    //    {
    //        if (value is SeedNum)
    //        {
    //            return (int)((SeedNum)value).SeedType;
    //        }
    //        else if (value is int)
    //        {
    //            return Convert.ToInt32(value);
    //        }
    //        else
    //        {
    //            return (int)((SeedType)Enum.Parse(typeof(SeedType), value.ToString()));
    //        }
    //    }
    //    public override Type StorageType
    //    {
    //        get { return typeof(int); }
    //    }
    //}
    public class SeedNumConst
    {
        public static readonly string EmptyOrderNO = "自动编号";
    }

    [Custom("Caption", "单据设置")]
    [NavigationItem("基础管理")]
    [DefaultProperty("SeedType")]
    public class SeedNum : XPObject
    {
        public SeedNum(Session session)
            : base(session)
        {

        }

        private SeedType _seedType;
        [Custom("Caption", "单据类型")]
        [Custom("AllowEdit", "False")]
        public SeedType SeedType
        {
            get
            {
                return _seedType;
            }
            set
            {
                SetPropertyValue("SeedType", ref _seedType, value);
            }
        }

        private string _seedCaption;
        [Custom("Caption", "单据描述")]
        public string SeedCaption
        {
            get
            {
                return _seedCaption;
            }
            set
            {
                SetPropertyValue("SeedCaption", ref _seedCaption, value);
            }
        }
        private string _Prefix = "";
        [Custom("Caption", "单据编号前缀")]
        public string Prefix
        {
            get
            {
                return _Prefix;
            }
            set
            {
                SetPropertyValue("Prefix", ref _Prefix, value);
            }
        }
        private int _Length = 4;
        [Custom("Caption", "流水号位数")]
        [Custom("AllowEdit", "False")]
        public int Length
        {
            get
            {
                return _Length;
            }
            set
            {
                SetPropertyValue("Length", ref _Length, value);
            }
        }

        private int _Seed = 0;
        [Custom("Caption", "种子")]
        [Custom("AllowEdit", "False")]
        public int Seed
        {
            get
            {
                return _Seed;
            }
            set
            {
                SetPropertyValue("Seed", ref _Seed, value);
            }
        }
        private DateTime _SeedDate = DateTime.Now;
        [Custom("AllowEdit", "False")]
        public DateTime SeedDate
        {
            get
            {
                return _SeedDate;
            }
            set
            {
                SetPropertyValue("SeedDate", ref _SeedDate, value);
            }
        }
        public static string GetSeedNum(Session session, SeedType seedType)
        {
            SeedNum seednum = session.FindObject<SeedNum>(new BinaryOperator("SeedType", seedType));
            if (seednum == null)
            {
                seednum = new SeedNum(session);
                seednum.SeedType = seedType;
                seednum.Length = 12;
                seednum.Save();
                return String.Format("{0}{1}", seednum.SeedDate.ToString("yyyyMMdd"), seednum.Seed.ToString("0000"));
            }
            else
            {
                DateTime now = DateTime.Now;
                if (seednum.SeedDate.Date != now.Date)
                {
                    seednum.Seed = 1;
                }
                else
                {
                    seednum.Seed++;
                }
                seednum.SeedDate = now;

                return string.Format("{0}{1}{2}", seednum.Prefix, seednum.SeedDate.ToString("yyyyMMdd"), seednum.Seed.ToString("0000"));
            }
        }
    }

    /// <summary>
    /// 种子类型
    /// </summary>
    public enum SeedType
    {
        采购订单,
        估价入库单,
        购货单,
        委托代销单,
        销售订单,
        销售单,
        其他入库单,
        其他出库单,
        组装单,
        拆卸单,
        盘盈单,
        盘亏单,
        调拨单,
        调价单,
        收款单,
        其他收款单,
        付款单,
        其他付款单,
        核销单,
        银行存款单
    }


    #endregion


    #region 注释
    //[NavigationItem("基础资料")]
    //[DefaultProperty("仓库名称")]
    //public class 仓库 : XPLiteObject
    //{
    //    public 仓库(Session session)
    //        : base(session)
    //    {

    //    }
    //    private string _仓库名称;
    //    [Custom("Caption", "仓库名称")]
    //    [Key()]
    //    public string 仓库名称
    //    {
    //        get { return _仓库名称; }
    //        set { SetPropertyValue<string>("仓库名称", ref _仓库名称, value); }
    //    }

    //}


    //[NavigationItem("基础资料")]
    //[DefaultProperty("单位名称")]
    //public class 单位 : XPLiteObject
    //{
    //    public 单位(Session session)
    //        : base(session)
    //    {

    //    }
    //    private string _单位名称;
    //    [Custom("Caption", "单位名称")]
    //    [Key(false)]
    //    public string 单位名称
    //    {
    //        get { return _单位名称; }
    //        set { SetPropertyValue<string>("单位名称", ref _单位名称, value); }
    //    }

    //}
    //[NavigationItem("基础资料")]
    //[DefaultProperty("Name")]
    //public class 商品分类 : XPLiteObject, IHCategory
    //{
    //    public 商品分类(Session session)
    //        : base(session)
    //    {

    //    }
    //    private string _name;
    //    [Custom("Caption", "商品分类名称")]
    //    [Key(false)]
    //    public string Name
    //    {
    //        get
    //        {
    //            return _name;
    //        }
    //        set
    //        {
    //            SetPropertyValue<string>("Name", ref _name, value);
    //        }
    //    }
    //    private 商品分类 _父商品分类;
    //    [Association("父-子商品分类")]
    //    public 商品分类 父商品分类
    //    {
    //        get
    //        {
    //            return _父商品分类;
    //        }
    //        set
    //        {
    //            SetPropertyValue<商品分类>("父商品分类", ref _父商品分类, value);
    //        }
    //    }
    //    [Association("父-子商品分类")]
    //    public XPCollection<商品分类> 子商品分类
    //    {
    //        get
    //        {
    //            return base.GetCollection<商品分类>("子商品分类");
    //        }
    //    }
    //    private int _排序号;
    //    public int 排序号
    //    {
    //        get { return _排序号; }
    //        set { SetPropertyValue<int>("排序号", ref _排序号, value); }
    //    }

    //    ITreeNode IHCategory.Parent
    //    {
    //        get
    //        {
    //            return 父商品分类;
    //        }
    //        set
    //        {
    //            父商品分类 = value as 商品分类;
    //        }
    //    }

    //    IBindingList ITreeNode.Children
    //    {
    //        get
    //        {
    //            return 子商品分类;
    //        }
    //    }

    //    ITreeNode ITreeNode.Parent
    //    {
    //        get
    //        {
    //            return 父商品分类;
    //        }
    //    }

    //    [NonPersistent, RuleFromBoolProperty("ProductCategoryCircularReferences",
    //        DefaultContexts.Save,
    //        "Circular refrerence detected. To correct this error, set the Parent property to another value.",
    //        UsedProperties = "父商品分类"),
    //    Browsable(false)]
    //    public bool IsValid
    //    {
    //        get
    //        {
    //            for (商品分类 category = this.父商品分类; category != null; category = category.父商品分类)
    //            {
    //                if (category == this)
    //                {
    //                    return false;
    //                }
    //            }
    //            return true;
    //        }
    //    }
    //}


    //[NavigationItem("基础资料")]
    //[DefaultProperty("客户名称")]
    //public class 客户 : BaseObject
    //{
    //    public 客户(Session session)
    //        : base(session)
    //    {

    //    }
    //    private string _客户名称;
    //    [Custom("Caption", "客户名称")]
    //    public string 客户名称
    //    {
    //        get { return _客户名称; }
    //        set { SetPropertyValue<string>("客户名称", ref _客户名称, value); }
    //    }

    //}
    //[NavigationItem("基础资料")]
    //[DefaultProperty("供应商名称")]
    //public class 供应商 : BaseObject
    //{
    //    public 供应商(Session session)
    //        : base(session)
    //    {

    //    }
    //    private string _供应商名称;
    //    [Custom("Caption", "供应商名称")]
    //    public string 供应商名称
    //    {
    //        get { return _供应商名称; }
    //        set { SetPropertyValue<string>("供应商名称", ref _供应商名称, value); }
    //    }

    //}
    //[NavigationItem("基础资料")]
    //[DefaultProperty("部门名称")]
    //public class 部门 : XPLiteObject
    //{
    //    public 部门(Session session)
    //        : base(session)
    //    {

    //    }
    //    private string _部门名称;
    //    [Custom("Caption", "部门名称")]
    //    [Key(false)]
    //    public string 部门名称
    //    {
    //        get { return _部门名称; }
    //        set { SetPropertyValue<string>("部门名称", ref _部门名称, value); }
    //    }
    //}
    #endregion
}
